# author: axin
# date: 2021/4/2 14:59
# description:定义任务，文件名只能叫tasks，不能叫其他的
import logging

from celery_tasks.main import celery_app
# from celery_tasks.sms.constants import SMS_CODE_REDIS_EXPIRES, SEND_SMS_TEMPLATE_ID
from . import constants
from celery_tasks.sms.yuntongxun.ccp_sms import CCP

# 日志生成器
logger = logging.getLogger('django')


@celery_app.task(bind=True, name='send_sms_code', retry_backoff=3)  # 使用装饰器来装饰异步任务，保证celery识别这样的人物，name是给这个任务一个名字
def send_sms_code(self, mobile, sms_code):
    """定义发送验证码的任务
    :param mobile:手机号码
    :param sms_code:验证码
    :return : 成功0，失败-1
    """
    try:
        send_ret = CCP().send_template_sms(mobile, [sms_code, constants.SMS_CODE_REDIS_EXPIRES // 60],
                                           constants.SEND_SMS_TEMPLATE_ID)  # 300/60=5.0  300//60=5  //取整
    except Exception as e:
        logger.error(e)
        return self.retry(exc=e, max_retries=3)
